/*------------------------------
 *
 * gramparse.h
 *  declarations for routines exported from lexer and parser files.
 *
 *------------------------------
 */
#ifndef GRAMPARSE_H
#define GRAMPARSE_H

#include "nodes/parsenodes.h"

/* we track token locations in terms of byte offsets from the start of
 * the source string, not the column number/line number representation
 * that location(usually the first token location) for each construct,
 * not the beginning and ending locations as bison does by default. It's
 * therefore sufficient to make YYLTYPE an int.
 */
#define YYLTYPE int

typedef enum
{
  BACKSLASH_QUOTE_OFF,
  BACKSLASH_QUOTE_ON,
  BACKSLASH_QUOTE_SAF_ENCODING
}BackslashQuoteType;

/* from scan.l */
extern int backslash_quote;
extern bool escape_string_warning;
extern bool standard_conforming_strings;

/* from parser.c */
extern int filtered_base_yylex(void);

/* from scan.l */
extern void scanner_init(const char *str);
extern void scanner_finish(void);
extern int base_yylex(void);
extern int scanner_errposition(int location);
extern void base_yyerror(const char *message);

/* from gram.y */
extern void parser_init(void);
extern int base_yyparse(void);
#endif /* GRAMPARSE_H */
